// 基于 axios 封装的请求模块
import ajax from 'axios'
import { getToken } from './token'
// 新建一个新的axios实例
const axios = ajax.create({
  baseURL: '/api',//运用代理服务器，相关设置在vue.config.js中的proxy配置
})

// // 添加响应拦截器
// axios.interceptors.response.use(function (response) { // 当状态码为2xx/3xx开头的进这里
//   // 对响应数据做点什么
//   return response
// }, async function (error) { // 响应状态码4xx/5xx进这里
//   // 对响应错误做点什么
//   // console.dir(error)
//   return Promise.reject(error)
// })

// // 添加请求拦截器
axios.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么, 如果vuex里有token携带在请求头中
  if (getToken()?.length > 0 && config.headers.token === undefined) {
    // 发起请求之前, 把token携带在请求头上(表明自己身份)
    config.headers.token = `${getToken()}`
  }
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 导出自定义对象，参数对象解构赋值
export default ({ url, method = 'GET', params = {}, data = {}, headers = {}, responseType }) => {
  return axios({
    url: url,
    method: method,
    params: params,
    data: data,
    headers: headers,
    responseType: responseType,
  })
}
